package com.huike.report.service;

import java.util.List;
import java.util.Map;

import com.huike.report.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import com.huike.clues.domain.TbActivity;
import com.huike.clues.domain.TbClue;
import com.huike.clues.domain.vo.IndexStatisticsVo;
import com.huike.contract.domain.TbContract;

public interface IReportService {

    /**
     *新增客户统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public LineChartVO contractStatistics(String beginCreateTime, String endCreateTime);


    /**
     * 客户统计报表
     * @param tbContract
     * @return
     */
    public  List<TbContract> contractReportList(TbContract tbContract);

    /**
     * 销售统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public LineChartVO salesStatistics(String beginCreateTime, String endCreateTime);



    /**
     * 销售统计部门报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public List<Map<String, Object>> deptStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计渠道报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public List<Map<String, Object>> channelStatisticsList(String beginCreateTime, String endCreateTime);
    /**
     * 销售统计归属人报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public List<Map<String, Object>> ownerShipStatisticsList(String beginCreateTime, String endCreateTime);



    /**
     * 渠道统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public List<Map<String, Object>> chanelStatistics(String beginCreateTime, String endCreateTime);


    /**
     * 活动统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public List<Map<String, Object>> activityStatistics(String beginCreateTime, String endCreateTime);



    public List<TbClue> cluesStatisticsList(TbClue clue);

    /**
     * 活动渠道统计
     * @param activity
     * @return
     */
    public List<ActivityStatisticsVo> activityStatisticsList(TbActivity activity);


    public IndexVo getIndex(IndexStatisticsVo request);


    public List<Map<String,Object>> salesStatisticsForIndex(IndexStatisticsVo request);


    /**
     * 首页基本数据展示
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    IndexBaseInfoVO getBaseInfo(String beginCreateTime, String endCreateTime);

    /**
     * 查询今日处理的的线索数量，商机数量，合同数量，成交的金额
     * @return
     */
    IndexBaseInfoVO getTodayInfo();

    /**
     * 查询当前用户待跟进的 线索，商机，和待分配的线索和商机
     * @return
     */
    IndexTodoInfoVO getTodoInfo(String beginCreateTime ,String endCreateTime);

    /**
     * 统计出一段时间内的每一天 新增的线索数量
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVO cluesStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 学科客户分布饼图:统计在时间段内每个学科的报名情况和占比
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String,Integer>> subjectStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 綫索轉化率漏斗圖 需要返回四條數據：綫索數量、有效綫索數、商機數量、合同數量
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    VulnerabilityMapVo getVulnerabilityMap(String beginCreateTime, String endCreateTime);

    /**
     *商机转化龙虎榜接口 用戶名稱、部門名稱、轉化數量、轉化率
     * @param beginCreateTime
     * @param endCreateTime
     * @return BusinessChangeVO
     */
    List<BusinessChangeVO> businessChangeStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 线索转化龙虎榜接口 用戶名稱、部門名稱、轉化條數、轉化率
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<SaleStatisticVO> salesStatistic(String beginCreateTime, String endCreateTime);
}
